package com.qinggeng.project.system.service.impl;

import com.qinggeng.common.enums.UserTypeEnum;
import com.qinggeng.common.exception.CustomException;
import com.qinggeng.common.utils.DateUtils;
import com.qinggeng.project.system.domain.*;
import com.qinggeng.project.system.mapper.CourierMapper;
import com.qinggeng.project.system.mapper.OrdersCourierMapper;
import com.qinggeng.project.system.service.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;

/**
 * 订单配送员Service业务层处理
 *
 * @author qinggeng
 * @date 2020-06-17
 */
@Slf4j
@Service
public class OrdersCourierServiceImpl implements IOrdersCourierService
{
    @Resource
    private OrdersCourierMapper ordersCourierMapper;

    @Autowired
    private IOrdersPointService ordersPointService;

    @Autowired
    private IDistributionPointService pointService;

    @Autowired
    private ISysUserService userService;

    @Autowired
    private IUserAliasService userAliasService;

    @Resource
    private CourierMapper courierMapper;
    /**
     * 查询订单配送员
     *
     * @param ordersCourierId 订单配送员ID
     * @return 订单配送员
     */
    @Override
    public OrdersCourier selectOrdersCourierById(Long ordersCourierId)
    {
        return ordersCourierMapper.selectOrdersCourierById(ordersCourierId);
    }

    /**
     * 查询订单配送员列表
     *
     * @param ordersCourier 订单配送员
     * @return 订单配送员
     */
    @Override
    public List<OrdersCourier> selectOrdersCourierList(OrdersCourier ordersCourier)
    {
        return ordersCourierMapper.selectOrdersCourierList(ordersCourier);
    }

    /**
     * @param ordersId
     * @return
     */
    @Override
    @Transactional
    public int insertOrdersCourier(Long ordersId) {
        Courier courier = courierMapper.getCourierByOrdersId(ordersId);
        //删除标志（0代表存在 2代表删除）
        if(null==courier){
            log.error("骑手不存在！");
            throw new CustomException("骑手不存在！");
        }
        //订单骑手信息保存到数据库中
        OrdersCourier ordersCourier = new OrdersCourier(courier);
        ordersCourier.setOrdersId(ordersId);
        ordersCourier.setCreateTime(DateUtils.getNowDate());
        return ordersCourierMapper.insertOrdersCourier(ordersCourier);
    }

    @Override
    public int insertOrdersCourier(OrdersCourier ordersCourier) {
        return ordersCourierMapper.insertOrdersCourier(ordersCourier);
    }

    /**
     * 修改订单配送员
     *
     * @param ordersCourier 订单配送员
     * @return 结果
     */
    @Override
    public int updateOrdersCourier(OrdersCourier ordersCourier)
    {
        ordersCourier.setUpdateTime(DateUtils.getNowDate());
        return ordersCourierMapper.updateOrdersCourier(ordersCourier);
    }

    /**
     * 批量删除订单配送员
     *
     * @param ordersCourierIds 需要删除的订单配送员ID
     * @return 结果
     */
    @Override
    public int deleteOrdersCourierByIds(Long[] ordersCourierIds)
    {
        return ordersCourierMapper.deleteOrdersCourierByIds(ordersCourierIds);
    }

    /**
     * 删除订单配送员信息
     *
     * @param ordersCourierId 订单配送员ID
     * @return 结果
     */
    @Override
    public int deleteOrdersCourierById(Long ordersCourierId)
    {
        return ordersCourierMapper.deleteOrdersCourierById(ordersCourierId);
    }

    @Override
    public OrdersCourier selectOrdersCourierByOrdersId(Long ordersId) {
        return ordersCourierMapper.selectOrdersCourierByOrdersId(ordersId);
    }

    @Override
    public List<OrdersCourier> selectOrdersCourierByOrdersIds(List<Long> orderIdList) {
        return ordersCourierMapper.selectOrdersCourierByOrdersIds(orderIdList);
    }
}
